package com.baor.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baor.dao.ProtocalDao;
import com.baor.domain.ProtocalVo;
import com.baor.service.ProtocalService;
import com.baor.utils.AjaxResult;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class ProtocalServiceImpl implements ProtocalService {

    @Autowired
    private ProtocalDao protocalDao;

    private Page<ProtocalVo> getPage(Map<String,Object> map){
        if ( map.get("pageIndex") == null || "".equals(map.get("pageIndex")) )
            map.put("pageIndex",1);
        if ( map.get("pageSize") == null || "".equals(map.get("pageSize")) )
            map.put("pageSize",10);
        Long pageIndex = Long.valueOf(map.get("pageIndex").toString());
        Long pageSize = Long.valueOf(map.get("pageSize").toString());
        return new Page<>(pageIndex,pageSize);
    }


    private MPJLambdaWrapper<ProtocalVo> getMpj(){
        MPJLambdaWrapper<ProtocalVo> mpj = new MPJLambdaWrapper<>();
        mpj
                .selectAll(ProtocalVo.class);
        return mpj;
    }


    @Override
    public AjaxResult<?> list(Map<String, Object> map) {
        MPJLambdaWrapper<ProtocalVo> mpj = getMpj();
        if ( map.get("siteId") != null && !"".equals(map.get("siteId")) )
            mpj.eq(ProtocalVo::getSiteId,map.get("siteId"));
        Page<ProtocalVo> page = protocalDao.selectPage(getPage(map),mpj);
        //-------- 结果处理 --------
        List<ProtocalVo> records = page.getRecords();
        long pages = page.getPages();
        //-------- 数据封装 --------
        Map<String,Object> res = new HashMap<>();
        res.put("pageCount",pages);
        res.put("list",records);
        return AjaxResult.success(res);
    }
    @Override
    public AjaxResult<?> insert(ProtocalVo vo) {
        MPJLambdaWrapper<ProtocalVo> mpj = getMpj();
        mpj.eq(ProtocalVo::getSiteId,vo.getSiteId());
        List<ProtocalVo> protocalVos = protocalDao.selectList(mpj);
        for ( ProtocalVo x : protocalVos ){
            if ( x.getProtocalTitle().equals(vo.getProtocalTitle()) )
                return AjaxResult.error("不可重复添加同标题协议");
        }
        int insert = protocalDao.insert(vo);
        return insert > 0 ? AjaxResult.success() : AjaxResult.error();
    }


}
